import axios from 'axios'
import Qs from 'querystring'
import $ from 'jquery'
import func from '@/libs/func.js'
export default {
    async asyncFetchData(paramsJson) {
        let method = paramsJson.method ? paramsJson.method : 'get'
        let url = paramsJson.url ? paramsJson.url : ''
        let data = paramsJson.data ? paramsJson.data : {}
        let params = paramsJson.params ? paramsJson.params : ''
        let isUseBaseURL = paramsJson.isUseBaseURL ? paramsJson.isUseBaseURL : 'use'
        let baseURL = ''
        if (isUseBaseURL == 'use') {
            baseURL = paramsJson.baseURL ? paramsJson.baseURL : '/selfapi/'
        }

        let headers = Object.assign({ 'X-Requested-With': 'XMLHttpRequest' }, paramsJson.headers)
            // console.log(headers)
            // let headers = paramsJson.headers ? paramsJson.headers : {'X-Requested-With':XMLHttpRequest}
        let callback = paramsJson.callback ? paramsJson.callback : function() {}
        try {

            let jsondata = await axios({
                method: method,
                url: url,
                baseURL: baseURL,
                headers: headers,
                data: data, //post方法 传data
                responseType: 'json',
                //`validateStatus` 定义对于给定的HTTP 响应状态码是 resolve 或 reject  promise 。如果 `validateStatus` 返回 `true` (或者设置为 `null` 或 `undefined`)，promise 将被 resolve; 否则，promise 将被 rejecte
                validateStatus: (status) => {
                    // console.log(status)
                    callback(status)
                        // if (status == 302) { //登陆信息超时  302 提示跳转登陆页面
                        //     func.getLoginMessage()
                        //     return false
                        // }
                    return status >= 200 && status < 300
                },
                // `transformResponse` 在传递给 then/catch 前，允许修改响应数据
                transformResponse: [function(data) {
                    return data;
                }],
                // get方法传params `params` 是即将与请求一起发送的 URL 参数
                // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
                params: params,
                timeout: 2000

            })
            return jsondata.data;

        } catch (e) {
            console.log('error--------')
            console.log(e)
        }


    },

    //ajax 同步请求  注释：axios貌似没有同步请求，所以用的jquery ajax
    syncAjax(paramsJson) {
        let method = paramsJson.method ? paramsJson.method : 'get'
        let url = paramsJson.url ? paramsJson.url : ''
        let data = paramsJson.data ? paramsJson.data : {}
        let baseURL = paramsJson.baseURL ? paramsJson.baseURL : '/selfapi/'

        return $.ajax({
            url: baseURL + url,
            type: method, //GET
            async: false, //或false,是否异步
            data: data,
            timeout: 5000, //超时时间
            dataType: 'json', //返回的数据格式：
            // contentType: "application/json;charset=UTF-8",
            beforeSend: function(xhr) {},
            success: function(data, textStatus, jqXHR) {},
            error: function(xhr, textStatus) {},
            complete: function() {}
        })
    }

}